package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;

/**
 * listFiles()   返回值：数组---File[]  直接遍历文件，文件夹
 * 遍历文件或者文件夹同时，过滤遍历出来的文件、文件夹
 * 需求：获取"API"项目下，名字开头以s名称
 * listFiles(FileFilter接口)  返回值：数组---File[]
 * Filter过滤器接口：过去遍历出来的问价、文件夹
 */
public class FilterAPI {
    public static void main(String[] args) {
        //获取"API"项目下：File构造器传入"."
        File file=new File("."+File.separator+"API");
        File[] subs=file.listFiles((File pathname)->pathname.getName().startsWith("s"));
        for (int i=0;i<subs.length;i++){
            System.out.println("过滤后的文件夹:"+subs[i].getName());
        }
        //4.创建过滤器实现类
        MyFilter myFilter=new MyFilter();
        //获取API项目下的所有的文件夹 并且必须是以s开头的
   //     File[] subs=file.listFiles();//传入过滤器接口对象 1.自己写实现类MyFilter
        //5.遍历数组
        for(int i=0;i<subs.length;i++){ //5.1获取数组下标
            //5.2数组名[下标]
            System.out.println("过滤后的文件夹："+subs[i].getName());
        }

    }
}
//1.自己的实现类 Myfilter  实现FileFilter接口:重写所有方法
class MyFilter implements FileFilter{
    //2.accept方法：获取到File的信息，【逻辑判断】条件满足：返回值true
    public boolean accept(File pathname) {
        //3.逻辑：判断获取的文件夹名字是s开头
        //3.1获取到过滤器传给我们pathname【File】的名称
        String name=pathname.getName();
        //3.2打印获取到的【File】的名称
        System.out.println("获取的名称是 ："+name);
        //3.3 判断名称是以s开头的文件夹
        // String字符串提供方法：返回值Boolean startWith("s")获取字符串首字符 返回：true
        return name.startsWith("s");
        //
    }
}


